
//监听新消息事件
var msgList = [];
var dateStart = null;
var selSess = null; //当前聊天会话对象
var friendHeadUrl = '/images/friend.jpg'; //仅demo使用，用于没有设置过头像的好友
var selToID;


//当前用户身份
var loginInfo = {
  'sdkAppID': null, //用户所属应用id,必填
  'identifier': null, //当前用户ID,必须是否字符串类型，必填
  'accountType': null, //用户所属应用帐号类型，必填
  'userSig': null //当前用户身份凭证，必须是字符串类型，必填
 // 'identifierNick': null, //当前用户昵称，不用填写，登录接口会返回用户的昵称，如果没有设置，则返回用户的id
  //'headurl': 'img/me.jpg' //当前用户默认头像，选填，如果设置过头像，则可以通过拉取个人资料接口来得到头像信息
};

//监听事件
var listeners = {
  "onConnNotify": onConnNotify //监听连接状态回调变化事件,必填
      ,
/*     "jsonpCallback": jsonpCallback //IE9(含)以下浏览器用到的jsonp回调函数，
      , */
  "onMsgNotify": onMsgNotify //监听新消息(私聊，普通群(非直播聊天室)消息，全员推送消息)事件，必填
      ,
/*     "onBigGroupMsgNotify": onBigGroupMsgNotify //监听新消息(直播聊天室)事件，直播场景下必填
      , */
/*     "onGroupSystemNotifys": onGroupSystemNotifys //监听（多终端同步）群系统消息事件，如果不需要监听，可不填
      , */
/*     "onGroupInfoChangeNotify": onGroupInfoChangeNotify //监听群资料变化事件，选填
      , */
/*     "onFriendSystemNotifys": onFriendSystemNotifys //监听好友系统通知事件，选填
      , */
/*     "onProfileSystemNotifys": onProfileSystemNotifys //监听资料系统（自己或好友）通知事件，选填
      , */
  "onKickedEventCall": onKickedEventCall //被其他登录实例踢下线
      ,
/*     "onC2cEventNotifys": onC2cEventNotifys //监听C2C系统消息通道
      , */
/*     "onAppliedDownloadUrl": onAppliedDownloadUrl //申请文件/音频下载地址的回调 */
};

//发送消息
//从我的好友列表中给好友发消息
function sendC2cMsg(instruct,macAddress){
  toAccount=macAddress;
  msgtosend=instruct;

  var msgLen = webim.Tool.getStrBytes(msgtosend);

  var maxLen, errInfo;

  maxLen = webim.MSG_MAX_LENGTH.C2C;
  errInfo = "消息长度超出限制(最多" + Math.round(maxLen / 3) + "汉字)";

  if (msgtosend.length < 1) {
      alert("发送的消息不能为空!");
      $("#send_msg_text").val('');
      return;
  }

  if (msgLen > maxLen) {
      alert(errInfo);
      return;
  }

  var sess=webim.MsgStore.sessByTypeId(webim.SESSION_TYPE.C2C, toAccount);
  if (!sess) {
      sess = new webim.Session(webim.SESSION_TYPE.C2C, toAccount, toAccount, friendHeadUrl, Math.round(new Date().getTime() / 1000));
  } 
  var isSend = true;//是否为自己发送
  var seq = -1;//消息序列，-1表示sdk自动生成，用于去重
  var random = Math.round(Math.random() * 4294967296);//消息随机数，用于去重
  var msgTime = Math.round(new Date().getTime() / 1000);//消息时间戳
  var subType;//消息子类型

  subType = webim.C2C_MSG_SUB_TYPE.COMMON;

  var msg = new webim.Msg(sess, isSend, seq, random, msgTime, loginInfo.identifier, subType, loginInfo.identifierNick);

  var text_obj;

  text_obj = new webim.Msg.Elem.Text(msgtosend);
  msg.addText(text_obj);

  webim.sendMsg(msg, function (resp) {
          selType=webim.SESSION_TYPE.C2C;
          selToID=toAccount;
          selSess=sess;
      webim.Tool.setCookie("tmpmsg_" + toAccount, '', 0);
  }, function (err) {
      alert(err.ErrorInfo);
  });
}
//监听新消息
function onMsgNotify(newMsgList) {
  var sess, newMsg;
  //获取所有聊天会话
  var sessMap = webim.MsgStore.sessMap();
  for (var j in newMsgList) {//遍历新消息
      newMsg = newMsgList[j];

      if(selToID){//没有聊天对象
          selToID=newMsg.getSession().id();
          selType=newMsg.getSession().type();
          selSess = newMsg.getSession();
          var headUrl;
          if(selType==webim.SESSION_TYPE.C2C){
              headUrl=friendHeadUrl;
          }else{
              headUrl=groupHeadUrl;
          }
      }
      if (newMsg.getSession().id() == selToID) {//为当前聊天对象的消息
          //接收到新消息json对象
          console.log(newMsg);
      
      }
      msgList.push(newMsg.elems[0].content.text);
  }
  //消息已读上报，以及设置会话自动已读标记
  webim.setAutoRead(selSess, true, true);
}
//监听连接状态回调变化事件
var onConnNotify = function(resp) {
  var info;
  switch (resp.ErrorCode) {
      case webim.CONNECTION_STATUS.ON:
          webim.Log.warn('建立连接成功: ' + resp.ErrorInfo);
          break;
      case webim.CONNECTION_STATUS.OFF:
          info = '连接已断开，无法收到新消息，请检查下你的网络是否正常: ' + resp.ErrorInfo;
          // alert(info);
          webim.Log.warn(info);
          break;
      case webim.CONNECTION_STATUS.RECONNECT:
          info = '连接状态恢复正常: ' + resp.ErrorInfo;
          // alert(info);
          webim.Log.warn(info);
          break;
      default:
          webim.Log.error('未知连接状态: =' + resp.ErrorInfo);
          break;
  }
};
//被新实例踢下线的回调处理
function onKickedEventCall() {
	 /*layer.alert("您已在其他地方登录，连接已断开，刷新页面即可重新连接！");*/
  webim.Log.error("其他地方登录，被T了");
}

//IE9(含)以下浏览器用到的jsonp回调函数
/* function jsonpCallback(rspData) {
  webim.setJsonpLastRspData(rspData);
} */

//初始化时，其他对象，选填
/* var options = {
  'isAccessFormalEnv': isAccessFormalEnv, //是否访问正式环境，默认访问正式，选填
  'isLogOn': isLogOn //是否开启控制台打印日志,默认开启，选填
}; */
function getUsig(userName){
	//获取usersig
//	var tip = layer.load(0, {shade: false});
	$.ajax({
	    type: "POST",
	    url: '/IMapi/getUserSig?macAddr='+userName,
	    beforeSend: function () {
	    },
//	    complete: function () {
//	    	layer.close(tip);
//	    },
	    error: function(request) {
	        layer.alert("系统错误");
	    },
	    success: function(result) {
	        if (result.status == 0 && result.data.ActionStatus == "OK") {
	        	var data = result.data;
	        	var usig = data.userSig;
	        	/*if(userName == "admin"){*/
	        		tenImInfo(userName,usig);
	        	/*}*/
	        	
	        }else{
	        	layer.alert("与设备建立连接失败！请检查IM配置");
	        }
	    }
	});
}
function tenImInfo(userName,usig){
	//获取IM账户信息
	var tip = layer.load(0, {shade: false});
	$.ajax({
	    type: "GET",
	    url: '/manager/Setting/findAll',
	    beforeSend: function () {
	    },
	    complete: function () {
	    	layer.close(tip);
	    },
	    error: function(request) {
	        layer.alert("系统错误");
	    },
	    success: function(result) {
	        if (result.status == 0) {
	        	var data = result.data;
	        	sdkAppID = data[0].sdkAppID;
	        	accountType = data[0].accountType;
	        	webimLogin(userName,usig,accountType,sdkAppID);
	        } 
	    }
	});
	
/*	function disposeNewMsg(){
	  	$.ajax({
		    type: "POST",
		    url: '/manager/Setting/findAll',
		    error: function(request) {
		        alert("Connection error");
		    },
		    success: function(result) {
		        if (result.status == 0) {
		        	
		        } 
		    }
		}); 
	}*/
  	
}
//sdk登录
function webimLogin(userName,usig,accountType,sdkAppID) {
	loginInfo.sdkAppID = sdkAppID;
	loginInfo.identifier = userName;
	loginInfo.accountType = accountType;
	loginInfo.userSig = usig;
  webim.login(
          //loginInfo, listeners, options,
          loginInfo, listeners,
          function (resp) {
              loginInfo.identifierNick = resp.identifierNick;//设置当前用户昵称
              initDemoApp();
          },
          function (err) {
              //alert(err.ErrorInfo);
          }
  );
}